package com.atguigu.gulimall.member;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

/**
 * 1-22-1 分布式组件-SpringCloud-OpenFeign测试远程调用, 原教程的方法有问题调不通, 这里用官方文档的方法
 * https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
 * 1, 想要远程调用别的服务
 *      1) 引入 open-feign
 *      2) main方法所在类里增加一个RestTemplate
 *          1)) 创建服务消费方法
 *          2)) 启动 ProviderApplication 和 ConsumerApplication ，调用 http://localhost:8080/echo/2018，返回内容为 Hello Nacos Discovery 2018。
 *      3) 开启远程调用功能  @EnableFeignClients
 *
 *      路径需要为全路径
 *      member 调用 coupon, 在member中注册coupon的接口
 *      同时开启menber的feign调用功能
 */
@MapperScan("com.atguigu.gulimall.member.dao")
@EnableFeignClients(basePackages = "com.atguigu.gulimall.member.feign")
@EnableDiscoveryClient
@SpringBootApplication
public class GulimallMemberApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallMemberApplication.class, args);
    }

    /**
     * 1-22-1 分布式组件-SpringCloud-OpenFeign测试远程调用
     */
    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

}
